扫码盒 Android SDK 集成文档(usb)

一、Android SDK概述


 Android sdk实现了android手机与扫码盒的连接通讯,手机通过连接可以获取扫码盒的基本参数信息(序列号)及扫码后的二维码信息,同时可以发送数据到扫码盒。

二、运行环境


 sdk支持android 4.1及上版本的手机系统(因为从 Android4.1开始,才正式支持USB Host),手机硬件需支持USB功能

三、集成准备

导入SDK LIB

在AndroidManifest.xml 里添加相关声明

```xml


    <uses-feature android:name="android.hardware.usb.host" android:required="true"/>
    解决键盘类USB插拔影响Activity生命周期触发断开连接重新通讯的问题add configChanges="keyboard|keyboardHidden"

```

```xml

<service android:name="com.wsm.hidlib.service.HIDService"/>

```

四、集成步骤

1、打开USB通讯

```java

import com.wsm.hidlib.HIDManager;
import com.wsm.hidlib.callback.HIDDataListener;
import com.wsm.hidlib.callback.HIDOpenListener;
import com.wsm.hidlib.constant.ConnectCostant;
import com.wsm.hidlib.constant.FormatConstant;

public void openHID(Context context, HIDOpenListener hidOpenListener, HIDDataListener hidDataListener)

    context:上下文对象   hidOpenListener: 设备状态回调 hidDataListener:数据接收回调

```

```java

void openSuccess(int openSuccessStatus);

    连接状态 openSuccessStatus:  USB_CONNECT: 连接USB;  COMMUNICATION_OPEN:通讯建立

void openError(int openErrorStatus);

    断开状态 openErrorStatus :   USB_DISCONNECT:断开USB;  COMMUNICATION_CLOSE:通讯断开;

```

```java

void onDataReceived(String dataMessage);

    dataMessage:数据内容


void onOriginalDataReceived(byte[] bytes, int length);

 bytes:收到数据的字节数组形式
 length:字节数组长度

```

2、关闭USB通讯

```java

public void closeHID()

```

3、获取序列号SN

```java

public void getSequenceNumber(HIDSequenceNumberListener hidSequenceNumberListener)

hidSequenceNumberListener:序列号SN接收回调

void onSequenceNumberReceived(byte[] bytes, int length);

 bytes:收到序列号的字节数组形式
 length:字节数组长度

```

4、发送数据

```java

public void sendData(String sendMessage)

向扫码盒发送数据如果回应通过onDataReceived回调;sendMessage:16进制的字符串

```

5、额外功能

```java

public int getHIDStatus()

获取扫码盒连接状态;
返回整型数字:
USB_CONNECT  usb连接
USB_DISCONNECT  usb断开
COMMUNICATION_OPEN  通讯打开
COMMUNICATION_CLOSE  通讯关闭

public boolean setFormat(String format)
设置输出字符串编码格式;format 字符串编码格式
FORMAT_UTF8 = "UTF-8";
FORMAT_GBK = "GBK";
FORMAT_HEX = "HexStr";
返回设置结果 true 成功,false 失败

public boolean setPackageTimeOut(long timelone)

设置超时时间;timelone 传入的设置超时时间,取值范围50L-5000L,默认500L
返回设置结果 true 成功,false 失败

public boolean addDeviceID(int vid, int pid)

默认支持两组设备[[0x1FCA,0x5AA8],[0x34EB,0x1503]],如果需要支持新设备,需要先添加设备VID、PID到支持列表再openHID打开USB通讯。

```

五、更新日志

1.0.0版本(2020.6.30)

1.0.1版本(2020.7.21)

1.0.2版本(2021.9.9)

1.0.3版本(2022.1.19)

1.0.4版本(2022.7.20)

1.0.5版本(2024.5.22)